home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mission 3
/
Mission 3.zip
/
Mission 3.iso
/
zugabe
/
va45
/
visual45
/
library
/
extend
/
cookie.s
< prev
next >
Wrap
Text File
|
1998-07-25
|
2KB
|
100 lines
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_COOKIE_SEARCH_ONE_COOKIE
; Description : Fonction de recherche d'un cookie
;
; Rq : Fonction à exécuter en superviseur (SUPEXEC)
;
; in : GWVA_ROOT_SEARCH_IN_OUT.l = cookie à rechercher ('_CPU')
; out : GWVA_ROOT_SEARCH_IN_OUT.l = ptr sur le mot long après la chaine
; donnée comme recherche ou 0.l si pas trouvé
;
; 11/01/98 : Création
;------------------------------------------------------------------------------
GWVA_COOKIE_SEARCH_ONE_COOKIE:
move.l GWVA_ROOT_SEARCH_IN_OUT,d0
clr.l GWVA_ROOT_SEARCH_IN_OUT
move.l _p_cookies.w,a0
cmp.l #0,a0
beq.s .no_cookie
.next: tst.l (a0)
beq.s .end_list
cmp.l (a0),d0
beq.s .found
lea 8(a0),a0
bra.s .next
.found: lea 4(a0),a0
move.l a0,GWVA_ROOT_SEARCH_IN_OUT
.end_list:
.no_cookie:
rts
ifd LIB_INSTALL_COOKIE
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_COOKIE_INSTALL_ONE_COOKIE
; Description : Fonction pour installer un cookie
;
; Rq : Fonction à exécuter en superviseur (SUPEXEC).
; Rq : A chaque implantation d'un nouveau cookie, on fait un malloc et on recopie
; Rq : tout le cookie-jar dedans, plus le notre.
;
; in : GWVA_ROOT_SEARCH_IN_OUT.l = cookie à installer ('_CPU')
; in : GWVA_ROOT_SEARCH_IN_OUT.l+4 = mot long à mettre pour le cookie
; out : GWVA_ROOT_SEARCH_IN_OUT.l = adresse d'implantation ou 0.l si échoué
;
; 16/05/98 : Création
;------------------------------------------------------------------------------
GWVA_COOKIE_INSTALL_ONE_COOKIE:
move.l $5a0.w,a0
cmp.l #0,a0
beq.s .no_cookie
move.l a0,a1
.find_next: tst.l (a1)
beq.s .found_last
lea 8(a1),a1
bra.s .find_next
.found_last:move.l a1,d0
sub.l a0,d0 ; d0 =place à réserver
add.l #8+4,d0
save.l d0/a0
MXALLOC #MX_PREFTTRAM,d0
load.l d1/a0
tst.l d0
beq.s .erreur_malloc
move.l d0,$5a0.w
move.l d0,a1
sub.l #2*4+4,d1
.copy_old_cookies:
subq.l #4,d1
bmi.s .end_copy
move.l (a0)+,(a1)+
bra.s .copy_old_cookies
.end_copy: move.l GWVA_ROOT_SEARCH_IN_OUT,(a1)
move.l GWVA_ROOT_SEARCH_IN_OUT+4,4(a1)
clr.l 8(a1)
move.l a1,GWVA_ROOT_SEARCH_IN_OUT
rts
.erreur_malloc:
.no_cookie: clr.l GWVA_ROOT_SEARCH_IN_OUT
rts
endc ; ifd LIB_INSTALL_COOKIE